home *** CD-ROM | disk | FTP | other *** search
- package sun.tools.tree;
-
- import sun.tools.java.AmbiguousField;
- import sun.tools.java.ClassNotFound;
- import sun.tools.java.Constants;
- import sun.tools.java.Environment;
- import sun.tools.java.FieldDefinition;
- import sun.tools.java.Identifier;
-
- public class Context implements Constants {
- Context prev;
- Node node;
- int varNumber;
- LocalField locals;
- FieldDefinition field;
-
- public Context(FieldDefinition var1) {
- this.field = var1;
- }
-
- Context(Context var1, Node var2) {
- this.prev = var1;
- this.node = var2;
- this.locals = var1.locals;
- this.varNumber = var1.varNumber;
- this.field = var1.field;
- }
-
- public int declare(Environment var1, LocalField var2) {
- ((FieldDefinition)var2).subModifiers(16);
- ((FieldDefinition)var2).setValue((Node)null);
- var2.prev = this.locals;
- this.locals = var2;
- var2.number = this.varNumber;
- this.varNumber += ((FieldDefinition)var2).getType().stackSize();
- return var2.number;
- }
-
- LocalField getLocalField(Identifier var1) {
- for(LocalField var2 = this.locals; var2 != null; var2 = var2.prev) {
- if (var1.equals(((FieldDefinition)var2).getName())) {
- return var2;
- }
- }
-
- return null;
- }
-
- FieldDefinition getField(Environment var1, Identifier var2) throws AmbiguousField, ClassNotFound {
- Object var3 = this.getLocalField(var2);
- if (var3 == null) {
- var3 = this.field.getClassDefinition().getVariable(var1, var2);
- }
-
- return (FieldDefinition)var3;
- }
-
- Context getLabelContext(Identifier var1) {
- for(Context var2 = this; var2 != null; var2 = var2.prev) {
- if (var2.node != null && var2.node instanceof Statement && ((Statement)var2.node).hasLabel(var1)) {
- return var2;
- }
- }
-
- return null;
- }
-
- Context getBreakContext(Identifier var1) {
- if (var1 != null) {
- return this.getLabelContext(var1);
- } else {
- for(Context var2 = this; var2 != null; var2 = var2.prev) {
- if (var2.node != null) {
- switch (var2.node.op) {
- case 92:
- case 93:
- case 94:
- case 95:
- return var2;
- }
- }
- }
-
- return null;
- }
- }
-
- Context getContinueContext(Identifier var1) {
- if (var1 != null) {
- return this.getLabelContext(var1);
- } else {
- for(Context var2 = this; var2 != null; var2 = var2.prev) {
- if (var2.node != null) {
- switch (var2.node.op) {
- case 92:
- case 93:
- case 94:
- return var2;
- }
- }
- }
-
- return null;
- }
- }
-
- Context getInlineContext() {
- for(Context var1 = this; var1 != null; var1 = var1.prev) {
- if (var1.node != null) {
- switch (var1.node.op) {
- case 150:
- case 151:
- return var1;
- }
- }
- }
-
- return null;
- }
-
- Context getInlineFieldContext(FieldDefinition var1) {
- for(Context var2 = this; var2 != null; var2 = var2.prev) {
- if (var2.node != null) {
- switch (var2.node.op) {
- case 150:
- if (((InlineMethodExpression)var2.node).field.equals(var1)) {
- return var2;
- }
- break;
- case 151:
- if (((InlineNewInstanceExpression)var2.node).field.equals(var1)) {
- return var2;
- }
- }
- }
- }
-
- return null;
- }
-
- long removeAdditionalVars(long var1) {
- return var1 & ((1L << this.varNumber) - 1L | 1L << 63);
- }
- }
-